﻿/*----------------------------------------------------------------
// Copyright (C) 年份 北京大象科技有限公司
// 版权所有。 	
//
// 文件名：WrappedTimer.cs
// 文件功能描述：
//
//
// 创建标识：gaohongwei 2016/10/24 10:34:57
//
// 修改标识：
// 修改描述：
//
// 修改标识：
// 修改描述：
//----------------------------------------------------------------*/

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

namespace ET.Score.SharedLibrary
{
    public sealed class WrappedTimer : IDisposable
    {
        private Timer _internalTimer;

        public WrappedTimer()
        {
            _internalTimer = new Timer(OnTick, null, Timeout.Infinite, Timeout.Infinite);
            Interval = Timeout.Infinite;
        }

        /// <summary>
        /// 获取或设置 Tick事件执行间隔(毫秒)
        /// </summary>
        public int Interval { get; set; }

        /// <summary>
        /// 当指定间隔时间到达后挂起
        /// </summary>
        public event EventHandler Tick;


        private void OnTick(object state)
        {
            var handler = Tick;
            if (handler != null)
            {
                handler(this, EventArgs.Empty);
            }
        }

        /// <summary>
        /// 启动Timer，使用当前设定的Interval值
        /// </summary>
        public void Start()
        {
            _internalTimer.Change(0, Interval);
        }

        /// <summary>
        /// 停止Timer
        /// </summary>
        public void Stop()
        {
            _internalTimer.Change(Timeout.Infinite, Timeout.Infinite);
        }


        public void Dispose()
        {
            _internalTimer.Dispose();
        }
    }
}
